The present invention generally relates to testing electronic circuit designs, and more particularly to simplifying the process by which electronic circuit designs are tested.
Testing electronic circuit designs is generally a long and complicated process. The testing process involves a variety of software tools that process various design files and transform design information into a form that can be tested. For example, testing an electronic design for an FPGA entails a design database tool, a design mapping tool, a place-and-route (par) tool, a bitstream generator tool and a number of other tools. Each tool has its own particular set of parameters that can be used to tailor operation of the tool.
In conjunction running the various tools, various pre-processing and post-processing tasks are performed in the testing process. For example, before a tool is run, test data may need to be extracted from a repository. After a tool is run, data generated by the tool may need to be compared to an expected set of data. Those skilled in the art will recognize many other pre-processing and post-processing tasks that are associated with the tools.
Scripts are often developed and used to simplify the task of testing an electronic circuit design. A script saves a user from having to manually invoke the various pre-processing tasks, tools, and post-processing tasks. Scripts can also be modified for new and/or changed designs.
A variety of factors have led to the development of additional support software that is used in conjunction with the tools. The factors include, for example, the need to share design components, test data, and tools between projects and/or between geographically dispersed development sites. While the support software to various degrees have met these objectives, the complexity of the support software may limit its widespread usage.
A method and apparatus that address the aforementioned problems, as well as other related problems, are therefore desirable.
In various embodiments, the invention provides a component-based method and system for structured use of a plurality of software tools. In one embodiment, flow files describe different execution sequences for selected ones of the plurality of software tools, and a first set of objects contains one or more methods for interfacing with a selected one or more of the flow files. A second set of objects contains one or more methods for collecting data from the software tools and entering the data in a database. The components include one or more methods that invoke one or more methods of the first and second sets of objects. Implementing tests using the components supports reuse of software, simplifies test construction, and enhances portability.
It will be appreciated that various other embodiments are set forth in the Detailed Description and Claims which follow.